package com.graduate.emos.wx.common.util;

import org.apache.http.HttpStatus;

import java.util.HashMap;
import java.util.Map;

public class R extends HashMap<String, Object> {
    //默认构造方法
    private R() {
        put("code", HttpStatus.SC_OK);
        put("msg", "success");
    }

    //定义可链式编程的put方法
    public R put(String key, Object value) {
        super.put(key,value);
        return this;
    }

    //创建[正常]R对象的静态方法
    public static R ok(){
        return new R();
    }

    //创建[正常]R对象的静态方法重载1--给定msg
    public static R ok(String msg){
        R r = new R();
        return r.put("msg",msg);
    }

    //创建[正常]R对象的静态方法重载2--给定一个map集合
    public static R ok(Map<String,Object> map){
        R r = new R();
        r.putAll(map);
        return r;
    }

    /**
     * 创建[异常]R对象的静态方法
     * @param code 错误的状态码 可能是500 400
     * @param msg 错误的消息
     * @return R对象
     */
    public static R error(int code, String msg){
        R r = new R();
        return r.put("msg",msg).put("code",code);
    }
    //创建[异常]R对象的静态方法重载1 固定状态码为500
    public static R error(String msg){
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR,msg);
    }

    //创建[异常]R对象的静态方法重载2 固定状态码和消息
    public static R error(){
        return error(HttpStatus.SC_INTERNAL_SERVER_ERROR,"System error,please contact the administrator!");
    }
}
